package com.search.api.util;

import java.io.File;
import java.util.Locale;

/**
 * @author huej
 * @description todo
 * @date 2021/7/15 4:17 下午
 */
public class FileUtils {

    /**
     * 获取文件名称
     *
     * @param filePath 文件路径
     * @return 文件名称
     */
    public static String getFileName(String filePath) {
        String fileName;
        if (filePath.contains(File.separator)) {
            fileName = filePath.substring(filePath.lastIndexOf(File.separator) + 1);
        } else {
            fileName = filePath;
        }
        return fileName;
    }


    /**
     * 获取文件类型
     *
     * @param file 文件名称
     * @return 文件类型
     */
    public static String getFileType(String file) {
        String fileType;
        if (file.contains(".")) {
            int i = file.lastIndexOf(".");
            fileType = file.substring(i);
        } else {
            fileType = "无文件类型";
        }
        return fileType.toLowerCase(Locale.ROOT);
    }

    /**
     * 设置  设置匹配文本关键字高亮
     *
     * @param matchString 匹配到文本
     * @param keyWord     关键字
     * @param type        高亮类型 success danger info  warning
     * @return html 文本前端解析
     */
    public static String setKeyWordHeightLight(String matchString, String keyWord, String type) {
        //计算匹配文本中包含多个 关键词
        int index = matchString.indexOf(keyWord);
        int i = 1;
        int j = 0;
        while (index >= 0) {
            j++;
            //逻辑处理
            //别纠结逻辑了可以实现行 垃圾代码
            if (j == i) {
                matchString = matchString.substring(0, index) + setHeightLight(keyWord, type) + matchString.substring(index + keyWord.length());
                i = 2;
                j = 0;
            }
            index = matchString.indexOf(keyWord, index + 1);
        }
        return matchString;
    }

    /**
     * 返回标签给前端 直接处理样式
     *
     * @param s    文本
     * @param type success danger info  warning
     * @return 得到不匹配到类型  直接返回原来参数
     */
    public static String setHeightLight(String s, String type) {
        if ("success".equals(type) || "danger".equals(type) || "info".equals(type) || "warning".equals(type)) {
            s = "<span class='el-tag el-tag--" + type + " el-tag--small el-tag--light item' >" + s + "</span>";
        } else {
            s = "<span class='el-tag el-tag--info el-tag--small el-tag--light item' >" + s + "</span>";
        }
        return s;
    }
}
